// package com.idata.service.services;
//
// import com.alibaba.fastjson2.JSON;
// import com.alibaba.fastjson2.JSONObject;
// import com.idata.entity.ResultObject;
// import com.idata.exception.GraphExecuteException;
// import com.vesoft.nebula.ErrorCode;
// import com.vesoft.nebula.client.graph.data.ResultSet;
// import com.vesoft.nebula.client.graph.exception.IOErrorException;
// import com.vesoft.nebula.client.graph.net.Session;
// import lombok.extern.slf4j.Slf4j;
// import org.springframework.stereotype.Service;
//
// import java.util.List;
//
// /**
//  * @File BaseServer.Java
//  * @Modify Time      @Author    @Version    @Description
//  * ------------      -------    --------    -----------
//  * 2023/9/20         yd.j      1.0         None
//  */
// @Slf4j
// @Service
// public class GraphBaseService {
//
//     private final Session session;
//
//     public GraphBaseService(Session session) {
//         this.session = session;
//     }
//
//     public ResultSet execute(String stmt) {
//         try {
//             log.info("执行 executeJson 方法，gql={}", stmt);
//
//             ResultSet resultSet = session.execute(stmt);
//
//             if (!resultSet.isSucceeded()) {
//                 throw new GraphExecuteException("execute stmt error, stmt: " + stmt +
//                         " ,code:" + resultSet.getErrorCode() + ", message:" + resultSet.getErrorMessage());
//             }
//
//             return resultSet;
//
//         } catch (IOErrorException e) {
//             log.error("execute stmt[{}] error, msg [{}]", stmt, e.getMessage());
//             throw new RuntimeException("execute stmt error, stmt: " + stmt, e);
//         }
//     }
//
//     public List<ResultObject> executeJSON(String stmt) {
//         try {
//             log.info("执行 executeJson 方法，stmt={}", stmt);
//
//             String data = session.executeJson(stmt);
//             log.debug("data:{}", data);
//             final JSONObject jsonObject = JSON.parseObject(data);
//             // 查询语句异常分析, 根据 json 返回结果解析 error 节点信息
//             final JSONObject error = jsonObject.getJSONArray("errors").getJSONObject(0);
//             final Integer code = error.getInteger("code");
//             if (code != ErrorCode.SUCCEEDED.getValue()) {
//                 throw new GraphExecuteException("execute stmt error, stmt: " + stmt +
//                         " ,code:" + code + ", message:" + error.getString("message"));
//             }
//             List<ResultObject> results = JSON.parseArray(jsonObject.get("results").toString(), ResultObject.class);
//             log.debug("{}", results);
//             for (ResultObject result : results) {
//                 // 数据包装一下
//                 result.convert();
//             }
//             return results;
//
//         } catch (IOErrorException e) {
//             log.error("execute stmt[{}] error, msg [{}]", stmt, e.getMessage());
//             throw new RuntimeException("execute stmt error, stmt: " + stmt, e);
//         }
//     }
//
//
// }
